This application pertains to visualizing data on a computer wherein an artificial workspace is created and presented to a user in such a way that it appears as a volumetric spatial region on a computer display. The subject matter discussed in the background section should not be assumed to be prior art merely as a result of its mention in the background section. Similarly, points mentioned in the background section or associated with the subject matter of the background section should not be assumed to have been previously recognized in the prior art. The subject matter in the background section merely represents different approaches, which in and of themselves may also be inventions.
Semiconductor manufacturers have historically produced separate chips for central processors (CPUs) and three-dimensional graphics processor units (GPUs) to independently develop, optimize and perform operations in each domain. Recent increases in the transistor count of chips are leading to a merger of the CPU and GPU into a single chip for increased performance. Software stacks have historically mirrored the physical separation of the CPU and GPU. With an upcoming physical merger of the CPU and GPU into a single chip, non-graphical software stacks and graphical software stacks may also be merged.
Computer information systems often categorize information into types and bestow descriptive properties to a type. The descriptive properties may themselves include at least a type, which in turn may include further properties. A data type, its description and it's relation to other data types forms a web of associations commonly understood in the computer-related art as a graph, and specifically, a type graph. A type graph forms an essential foundation for object-oriented programming languages such as Smalltalk, C++, Java, and C#. A type system containing type graphs is also an integral part of the instruction execution environments which run codes written in these programming languages.
Computer data types may be made to represent anything and it is this flexibility to represent anything that makes computer data types popular in computers today. One example of a type graph is a food type graph which may include at least types “Food”, “Vegetable”, “Fruit”, “Pumpkin”, “Eggplant”, “Cucumber”, “Orange”, “Pear”, and “Banana”. Each type may contain descriptive properties. For example, the “Fruit” type may contain descriptive properties including “Oranges”, “Pears”, and “Bananas” which associate the Fruit type to the Orange, Pear and Banana types. When a computer device loads an instance of a data type into memory, such as the information of an Orange type named “Valencia”, the information may be known as a data node. When a computer loads multiple instances from a type graph into memory, such as an instance of a Fruit type, an Orange type named “Valencia”, a Pear type named “Callery”, and a Banana type named “Cavandish”, the information may be known as an object graph or data graph.
The design of a data node based on a type node may be referred to as an “object”, “data node”, or “typed data node”. The term “data node” is chosen for use in the specification. It is to be understood that all references to a “data node” are synonymous with the terms “object” and “typed data node”. Accordingly, the design of a data graph based on a type graph may be referred to as an “object graph”, “data graph”, or “typed data graph”. The term “data graph” is chosen for use in the specification. It is to be understood that all references to a “data graph” are synonymous with the terms “object graph” and “typed data graph”.
The volume and complexity of data graphs produced world-wide has rapidly increased over the past twenty years. With the increased use of graphs has come a definite need for better visualization. Historically, visualizing data graphs has been predominantly in two dimensions. When a data graph contains few relations and 10's of data nodes it's relatively easy to track in two dimensions. As the number of relations grows into the hundreds or thousands, and as the number of data nodes grows into the hundreds or thousands, it becomes increasingly difficult to clearly track each node and each relation in two dimensions. As data graph scale and complexity increase, width and height of a two-dimensional rendering may be increased. But at a certain point computer displays run out of space.
Adding a third dimension is a logical and concise way to display more information. Humans are accustomed to visualizing every-day objects such as trees, rivers and birds in three dimensions. Yet data graphs may not contain graphical information; therefore, there is a clear need in the art for systems and methods that visualize any data graph of any size or complexity in three dimensions.